Method of implementing a variable number of filter sections for digital signal processing

ABSTRACT

A DSP-based equalization system which uses a jump and lookup table stored in volatile memory to execute a variable number of equalization structures stored in nonvolatile memory for the equalization of a data signal. The system and method of design provide minimal nonvolatile memory allocation.

TECHNICAL FIELD

[0001] This invention relates to a method for conditioning audio signals using filter sections in a digital signal processor.

BACKGROUND

[0002] Non-uniform environments surfaces such as an automotive vehicle interior have non-ideal acoustic responses. These degradations in the audio system can be overcome by using analog or digital filter sections in a digital signal processor (DSP) to equalize or shape audio signal content prior to being sent to the speakers. In a vehicle that has equalization, front and rear channels are equalized with a different number of filter sections for a given signal. For example, the DSP in the radio can be programmed and adjusted to equalize a vehicle for a desired acoustical sound. A programmer can determine which equalization characteristics are needed in a desired output for a given environment of a vehicle. Such equalization characteristics are programmed into the nonvolatile memory such as the ROM of the DSP for filtering.

[0003] The digital filter structures within the DSP manipulate discrete samples of an input signal to produce a filter signal output. During the processing of a signal, it may become necessary to change the filtering of the signal. To minimize hardware/or software requirements, it may be desirable to use the same filter section or minimal filter sections with different digital filter coefficients. A programmer can write and execute code for the DSP utilizing more filter sections, but this is not practical since an end user is limited by the processor's bandwidth. The more filter structures the programmer uses the larger the memory will have to be to store the executable code. That is, a programmer would have to allocate additional memory every time the same or a different equalization structure is utilized.

[0004] To alleviate this issue, some DSP's have hardware registers for looping sections of code that can be changed even after the DSP has been masked into a ROM, although not all DSP's have this type of looping hardware.

[0005] What would be desirable to have is new and improved device and method for conditioning audio signals using a DSP overcoming the disadvantages described above. Such a device that uses volatile memory to initiate the executable code for a variable number of equalization filter sections would overcome such disadvantages.

SUMMARY

[0006] Consonant with an aspect of the present invention, the amount of memory used to equalize a given environment is reduced.

[0007] In one aspect of the invention, the method allows a variable number of filter sections to be dynamically allocated within the available DSP bandwidth where filtering is needed most. A jump and lookup table, which contains a variable number of addresses of executable code for filtering, is stored into a volatile memory such as RAM. Filter coefficients, which are used to create a specific filter structure to produce the desired audio output, are also stored into volatile memory. The jump and lookup table can execute a variable number of filter structures also known as equalization structures in conjunction with the filter coefficients for equalization of an input signal to obtain a desired output signal.

BRIEF DESCRIPTION OF THE DRAWINGS

[0008] A more complete appreciation of the present invention and many of its advantages will be readily obtained as they become better understood by reference to the following detailed description when considered in connection with the accompanying drawings and detailed specification.

[0009]FIG. 1 is a block diagram showing portions of a DSP radio receiver, in accordance with the preset invention;

[0010]FIG. 2 is a block diagram showing elements to configure the input signal of a DSP in accordance with the present invention;

[0011]FIGS. 3a and 3 b shows various equalization structures in accordance with the present invention;

[0012]FIG. 4 is a table showing a set of filter coefficients for a given equalization structure in accordance with the present invention;

[0013]FIG. 5 is a jump and lookup table showing addresses for executable code to be executed for an equalization structure in accordance with the present invention; and

[0014]FIG. 6 is a flowchart showing a preferred method for modifying an equalization structure dynamically in accordance with the present invention.

DETAILED DESCRIPTION OF THE INVENTION

[0015] Referring to FIG. 1, a processing module 11 according to the present invention is shown. Processing module 11 includes a DSP 12 and a controller 30 for executing and processing an input signal 14. In a preferred embodiment the input signal 14 is that of an audio signal. An A/D converter 18 and a D/A converter 20 in communication with DSP 12 that are used to convert the input signal 14 from analog to digital and digital to analog are provided for input and output respectively. A nonvolatile memory 24 is also provided, such as an EEPROM, to initially store a jump and lookup table 28 and filter coefficients 26 which will be described in greater detail hereinafter. A volatile memory 32 in communication with DSP 12 is used to temporarily store data for filtering. Volatile memory 32 may be integrated into DSP 12 or be provided in a stand alone package. After processing has been executed and the D/A conversion has been completed input signal 14 is then distributed to various channels 22 such as stereo speakers.

[0016] A block diagram of an equalization design system 10 which implements the executable code and filter characteristics is shown in FIG. 2. The nonvolatile memory 24 initially stores data containing filter coefficients 26 and jump and lookup table 28. The filter coefficients 26 and jump and lookup table 28 are created and programmed using a PC with desired filter characteristics created using a PC software Graphical User Interface, as disclosed in U.S. Pat. No. 5,617,480, prior to being stored in the nonvolatile memory 24. The filter coefficients 28 are settable so that an equalization structure 34 may be configured as desired. The controller 30 manages the communication between the nonvolatile memory 24 and the DSP 12. The controller 30 may be integrated into the DSP 12. Controller 30 is executed at the time the data stored in the nonvolatile memory 24 will be downloaded to the volatile memory 32 to begin processing the input signal 14. During the processing of the input signal 14, addresses in the jump and lookup table 28 contain locations that direct which equalization structure 34 will be utilized and the number of times the equalization structure 34 or an EQ band will be executed to filter the input signal 14.

[0017]FIGS. 3a and 3 b are schematic diagrams illustrating typical architecture for a second order equalization structure. In a first embodiment, a plurality of equalization structures are cascaded in series between an input and an output. The plurality of equalization structures may be of a same order or varying orders. An output of a predetermined first equalization structure known as an intermediate result 15 will become an input of a predetermined second equalization structure.

[0018] In another embodiment, an equalization structure may be used repeatedly for an entire bandwidth or for a certain number of bands. In this embodiment, an output of a predetermined first equalization structure will be stored in a data storage device (not shown) as an intermediate result 15 and reapplied to the predetermined first equalization structure for further processing until a desired output signal is achieved. The data storage device may be RAM, a register, an accumulator, or the like.

[0019]FIG. 4 shows a table containing filter coefficients 26 which are initially stored in the nonvolatile memory 24 for processing. The filter coefficients 26 are used to modify and shape the plurality of equalization structures. The filter coefficients 26 are segregated or grouped into sets of filter coefficients 36. A predetermined first set of filter coefficients will be executed with a predetermined first equalization structure to modify the input signal 14 (shown in FIG. 1) to obtain a desired intermediate result 15 (shown in FIGS. 3a and 3 b). If the predetermined first equalization structure is re-utilized, then intermediate result 15 will be transmitted to the predetermined first equalization structure and a predetermined subsequent set of coefficients will be utilized to modify the predetermined first equalization structure. If a predetermined second equalization structure is utilized, then the intermediate result 15 will be transmitted to the predetermined second equalization structure utilizing the predetermined subsequent set of coefficients. Processing will continue with the subsequent set of coefficients using either the predetermined first equalization structure or a predetermined subsequent equalization structure until jump and lookup table 28 shows that a last equalization task has been executed and is redirected to a next task.

[0020]FIG. 5 shows a jump and lookup table 28 containing a list of addresses that direct DSP 12 to an appropriate executable code. The executable code is stored in a second nonvolatile memory 25 (shown in FIG. 1) of the DSP 12. The second nonvolatile memory 25 may reside on or off of the DSP 12. The executable code contains instructions as to which equalization structure 34 is to be executed and the number of times the predetermined first equalization structure or the predetermined subsequent equalization structures will be executed. Jump and lookup table 28 is downloaded from nonvolatile memory 24 into volatile memory 32. The controller 30 initiates the executable code in a first address 40 in the jump and lookup table 28 by use of a first pointer 38. A predetermined first address 40 contains a location of the executable code to run for initiating the processing of the predetermined first equalization structure. A second pointer 39 (shown in FIG. 4) is used to retrieve the predetermined first set of filter coefficients corresponding to the predetermined first equalization structure to be executed. After the executable code for the predetermined first address has been executed and processing is complete, first pointer 38 is incremented to a predetermined subsequent address of jump and lookup table 28. The predetermined subsequent address will contain a location of the executable code to execute either the predetermined first equalization structure or the predetermined subsequent equalization structure. Second pointer 39 will also be incremented to retrieve the predetermined subsequent set of coefficients. Incrementing first pointer 38 will continue until first pointer 38 indicates filtering is complete for a given channel. If other channels require filtering first pointer 38 and second pointer 39 will continue to increment, as previously described herein, until filtering has been completed for all channels.

[0021] The new and improved method of the present invention is shown in greater detail in FIG. 6. In step 50, filter coefficients and a jump and lookup table sequence are loaded and stored into a programmable memory unit such as a volatile memory device. The order of the filter coefficients and the jump and lookup table sequence are structured such that a pointer can be incremented so as to step through addresses of the jump and lookup table so as to run an executable code and apply a corresponding set of filter coefficients associated with an equalization structure to be executed. In step 52, an input signal is received by a DSP for filtering. In step 54, a pointer will be loaded with a first jump and lookup table entry which directs the DSP as to which equalization structure is to be executed. In step 56, a second pointer is loaded with an address of a set of coefficients to be transferred to the DSP for filtering the input signal. In step 58, the input signal is applied to a predetermined equalization structure and the output from said predetermined equalization structure is stored as intermediate result. In step 60, the pointer of said jump and lookup table is incremented to determine if the filtering is complete. If the filtering is not complete, then a return is made to step 54 for further filtering, otherwise the desired filtered signal is communicated to a respective channel as represented by step 62.

[0022] With the advantages described herein above, it is evident that by allocating the jump and lookup table 28 in volatile memory 32 containing addresses of the executable code to implement different equalization structures, less nonvolatile memory 25 will be utilized. Such efficiency is recognized wherein an equalization structure is stored only once in nonvolatile memory 25 and may be utilized as many times as needed without allocating additional addresses in nonvolatile memory 25 for subsequent uses.

[0023] Although the present invention has been described with regard to a vehicle audio system, the invention is not limited to such a system. The present invention may be used with equal utility in other embodiments and is not limited to those embodiments disclosed, and variations and modifications may be made without departing from the scope of the present invention. 

We claim:
 1. A method of maximizing a usage of memory wherein said memory includes a nonvolatile memory and a volatile memory in communication with a digital signal processor (DSP) comprising the steps of: transferring a jump and lookup table from said nonvolatile memory to said volatile memory, said jump and lookup table providing a sequence of addresses to execute an equalization structure of said DSP; transferring a plurality of filter coefficients from said nonvolatile memory to said volatile memory, said plurality of filter coefficients provide filter characteristics for said equalization structures; applying a set of filter coefficients to said equalization structure; filtering said input signal utilizing said equalization structure and producing an intermediate result wherein said intermediate result is stored for additional filtering; outputting said intermediate result as an equalized output signal when said sequence of addresses in said jump and lookup table indicates filtering is complete.
 2. A method of equalizing an input signal for a digital signal processor (DSP) which produces an output signal having a desired frequency response, comprising the steps of: transferring a jump and lookup table from nonvolatile memory to volatile memory, said jump and lookup table containing addresses to execute equalization structures of the DSP; transferring a plurality of filter coefficients from said nonvolatile memory to said volatile memory, said plurality of filter coefficients provide optimum equalization structures to obtain said desired frequency response; retrieving one of said addresses by use of a first pointer to execute a first equalization structure; retrieving a corresponding set of filter coefficients by use of a second pointer to provide a first equalization structure; producing an intermediate result in response to filtering said input signal; incrementing said first pointer to next said addresses of said jump and lookup table to execute a subsequent equalization structure; incrementing said second pointer to next said corresponding set of filter coefficients to provide a subsequent equalization structure; transferring said intermediate signal to said subsequent equalization structure for additional filtering, incrementing said first pointer and said second pointer to provide next said subsequent equalization structure for additional filtering; transferring said intermediate result as an equalized output signal when said first pointer indicates filtering is complete.
 3. The method of claim 2 wherein said frequency response includes a set of separate frequency bands.
 4. The method of claim 2 wherein said equalization structure uses a plurality of equalization structures.
 5. The method of claim 4 wherein a first equalization structure has a first filter characteristic and a second filter structure has a second filter characteristic.
 6. The method of claim 2 wherein said equalization structure uses one equalization structure repeatedly.
 7. The method of claim 2 wherein said input data signal is an audio signal and said jump and lookup table and said sets of filter coefficients are adapted to provide predetermined equalization according to a plurality of frequency bands customized to acoustical characteristics of a predetermined automobile interior.
 8. A data system for equalizing a data signal to produce a desired frequency response, comprising: a digital signal processor (DSP) equalization structure having settable coefficients and invokable on demand for filtering a data signal to produce a filtered signal; data storage storing said filtered signal as an intermediate result during processing of said data signal; a coefficient table containing a plurality of coefficient sets, each set being adapted to be transferred to said filter structure as said settable coefficients to provide a filter characteristic for said DSP equalization structure; a jump and lookup table containing addresses to execute said DSP equalization structure to produce said desired frequency response by sequentially using said intermediate result as said input signal; a nonvolatile memory; a volatile memory; transferring said coefficients sets and said jump and lookup table from said nonvolatile memory to said volatile memory;
 9. The data system of claim 8 wherein said input signal is an audio signal.
 10. The data system of claim 8 wherein said nonvolatile memory is an EEPROM.
 11. The data system of claim 8 wherein said volatile memory is RAM.
 15. The data system of claim 8 wherein said DSP equalization structure comprises a plurality of equalization structures.
 16. The data system of claim 8 wherein said DSP equalization structure comprises only one equalization structure used repeatedly.
 17. The data system of claim 8 wherein said data storage comprises RAM for storing intermediate results.
 18. The data system of claim 8 wherein said data storage comprises a register for storing intermediate results.
 19. The data system of claim 8 wherein said data storage comprises an accumulator for storing intermediate results.
 20. The data system of claim 8 wherein said desired frequency is achieved by equalizing a plurality of frequency bands for at least one channel to compensate for acoustical characteristics of the interior of a vehicle. 